#ifndef __UTILS_H__
    #define __UTILS_H__
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
	#include "tda_incidencia.h"
	#include "listasimple.h"
	#include "cola.h"

    /* Codigos de Errores */
    #define	ERROR_OR_EOF -2
    #define	RES_OK 0
    #define ERR_OUT_OF_MEMORY 2
    #define ERR_LISTA_VACIA 3
    #define ERR_UNDEFINED -3
    #define ERR_USUARIO_SIN_INCIDENCIAS -1
    #define ERR_OTRO -2
    #define ERR_ID_PROJECT_EXISTENTE 10
    #define ERR_ID_PROJECT_INEXISTENTE 11
    #define ERR_ID_INCIDENCIA_EXISTENTE 12
    #define ERR_ID_INCIDENCIA_INEXISTENTE 13

    #define ERR_ID_USER_EXISTENTE 0
    #define ERR_ID_USER_INEXISTENTE 1

    /* Defines Comandos */
	#define COM_ADD_INCIDENCIA 0
	#define COM_ADD_PROYECTO 1
	#define COM_ADD_USUARIO 2
	#define COM_GET_DATO_INCIDENCIA 3
	#define COM_GET_HISTORIAL_INCIDENCIA 4
	#define COM_GET_COMENTARIOS_INCIDENCIA 5
	#define COM_GET_INCIDENCIAS_USUARIO 6
	#define COM_GET_INCIDENCIAS_PROYECTO 7
	#define COM_CAMBIAR_ESTADO_INCIDENCIA 8
	#define COM_REGIST_RESOLUCION_INCIDENCIA 9
	#define COM_CARGAR_LISTA_COMANDOS 10

    /* Defines generales */
    #define	NUMCARACTERES 5
    #define FORMATO_FECHA "%Y-%m-%d %H:%M"

    /* Defines para no violar abstracción *
     *
     */

	typedef struct{
		int inci_id; /* ID de la incidencia */
		int inci_type; /* Tipo de incidencia*/
		int inci_priority; /* Prioridad de la incidencia*/
		int inci_user; /* ID del usuario que creo la incidencia*/
		int inci_assigned_user; /* ID del usuario al que se le asigno */
		char* inci_date_created;
		int inci_project_id;
		char* inci_summary;
		char* inci_description;
    }TAddinci;


    /* Funciones varias */

	int getString(char** result, FILE* fd);
    char* cTrim(const char* str, const char* cars);
    char* strmcpy(char** s1, const char* s2);
    char* strEntre(const char* str, const char a, const char b);
    bool strIsInt(const char* str);
#endif /* __UTILS_H__ */
